home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / basmenu.arc / LOADER.BAS next >
BASIC Source File  |  1987-05-07  |  2KB  |  41 lines

  1. 1000 '***********************************************************************
  2. 1010 '****                                                               ****
  3. 1020 '****                 Basic 'LOADER' Program                        ****
  4. 1030 '****                                                               ****
  5. 1040 '***********************************************************************
  6. 1050 KEY OFF
  7. 1060 DEF SEG
  8. 1070 SBT$=STRING$(159,32)
  9. 1080 SUB%=VARPTR(SBT$)
  10. 1090 DIRECT=PEEK(SUB%+1)+PEEK(SUB%+2)*256
  11. 1100 BLOAD"LOADER.MCH",DIRECT
  12. 1110 DIM DIRLST$(111),FIL$(111):FCB$=STRING$(33,32):DTA$=STRING$(33,32):COUNT%=0     :F$=STRING$(12,32)
  13. 1120 FOR L=0 TO 111:DIRLST$(L)=F$:NEXT
  14. 1130 CLS:LOCATE 1,20
  15. 1140 COLOR 0,7:PRINT"* * * Basic Program 'LOADER' * * *":COLOR 7,0
  16. 1150 LOCATE 3,10,1
  17. 1160 PRINT"From which drive do you wish to load (A B C D): ";
  18. 1170 GOSUB 1260:DRV$=KY$
  19. 1180 HIT%=INSTR("ABCD",DRV$)
  20. 1190 IF HIT%=0 THEN SOUND 50,7:GOTO 1150 ELSE PRINT DRV$
  21. 1200 LOCATE ,,0
  22. 1210 CALL DIRECT(DRV$,FCB$,DTA$,DIRLST$(0),COUNT%)
  23. 1220 LOCATE 5,1
  24. 1230 FOR LOOP%=0 TO COUNT%-1:IF RIGHT$(DIRLST$(LOOP%),3)="BAS" THEN NUM=NUM+1:FIL$(NUM)=DIRLST$(LOOP%):PRINT FIL$(NUM);SPC(4);
  25. 1240 NEXT:PRINT
  26. 1250 GOTO 1300
  27. 1260 KY$=INKEY$:IF KY$="" THEN 1260
  28. 1270 IF KY$<CHR$(97) OR KY$>CHR$(122) THEN 1290
  29. 1280 KY$=CHR$(ASC(KY$)-32)
  30. 1290 RETURN
  31. 1300 R=5:C=1:N=1
  32. 1310 LOCATE R,C:COLOR 0,7:PRINT FIL$(N):COLOR 7,0
  33. 1320 MV$=INKEY$:IF MV$="" THEN 1320 ELSE MV=ASC(RIGHT$(MV$,1))
  34. 1330 IF MV=80 AND N+5<=NUM THEN LOCATE R,C:PRINT FIL$(N):N=N+5:R=R+1:GOTO 1310
  35. 1340 IF MV=72 AND N-5>0 THEN LOCATE R,C:PRINT FIL$(N):N=N-5:R=R-1:GOTO 1310
  36. 1350 IF MV=77 AND C+16<80 AND INT(N/5)*5+INT((C+32)/16)<=NUM THEN LOCATE R,C:PRINT FIL$(N):N=N+1:C=C+16:GOTO 1310
  37. 1360 IF MV=75 AND C-16>0 AND INT(N/5)*5+INT((C-32)/16)>-2 THEN LOCATE R,C:PRINT FIL$(N):N=N-1:C=C-16:GOTO 1310
  38. 1370 IF MV=13 THEN LOCATE 25,1:COLOR 0,7:PRINT "LOADING ";DRV$;":";FIL$(N);:COLOR 7,0:RUN DRV$+":"+FIL$(N)
  39. 1380 IF MV=71 THEN LOCATE R,C:PRINT FIL$(N):GOTO 1300
  40. 1390 GOTO 1320
  41.